package com.own.business.resource.business.service;

import com.own.business.resource.entity.bo.FileRecordBo;
import com.own.business.resource.entity.map.FileRecordMapVo;
import com.own.business.resource.entity.po.FileRecord;
import com.own.business.resource.entity.query.FileRecordQuery;
import com.own.business.resource.entity.vo.FileRecordVo;
import com.own.component.common.base.service.BaseService;

import java.util.Collection;
import java.util.List;

/**
 * FileRecordService
 *
 * @author chenxueli
 * @date 2023-07-07 14:28:25
 */
public interface FileRecordService extends BaseService<
        FileRecord,
        FileRecordBo,
        FileRecordVo,
        FileRecordMapVo,
        FileRecordQuery
        > {

    /**
     * 上传完成之后的操作
     *
     * @param po 保存的文件信息
     * @return 文件信息
     */
    default FileRecordVo afterUpload(FileRecord po) {
        return add(po).getData();
    }

    /**
     * 上传完成之后的操作
     *
     * @param poList 保存的文件信息
     * @return 文件信息
     */
    default List<FileRecordVo> afterUpload(List<FileRecord> poList) {
        return addPoBatch(poList).getData();
    }

    /**
     * 根据md5值查询文件信息
     *
     * @param md5 md5信息
     * @return 文件信息
     */
    List<FileRecordVo> getByMd5(String md5);

    /**
     * 根据md5值查询文件信息
     *
     * @param md5      md5信息
     * @param position 上传的位置信息
     * @return 文件信息
     */
    List<FileRecordVo> listByMd5(String md5, String position);

    /**
     * 根据md5值查询文件信息
     *
     * @param md5      md5信息
     * @param position 上传的位置信息
     * @return 文件信息
     */
    FileRecordVo getByMd5(String md5, String position);

    /**
     * 根据md5值查询文件信息
     *
     * @param md5s md5信息
     * @return 文件信息
     */
    List<FileRecordVo> listByMd5(Collection<String> md5s);

    /**
     * 根据md5值查询文件信息
     *
     * @param md5s     md5信息
     * @param position 上传的位置信息
     * @return 文件信息
     */
    List<FileRecordVo> listByMd5(Collection<String> md5s, String position);

}
